package com.zhuiyun.project.api.products.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuiyun.project.api.system.menu.entity.TreeSelect;
import com.zhuiyun.project.api.products.product.entity.Sort;
import com.zhuiyun.project.common.response.CommonResult;
import com.zhuiyun.project.utils.pageUtil.PageRequest;
import com.zhuiyun.project.utils.pageUtil.PageResult;

import java.util.List;


/**
 * @ClassName SortService
 * @Description TODO 分类接口
 * @Author ypq
 * @Date 2023/10/25 16:44
 **/
public interface SortService extends IService<Sort> {

    /**
    * @Author ypq
    * @Description 分类的全查方法
    * @Date 2023/10/27 9:14
    * @Return List<TreeSelect>
    * @param sort
    */
    List<TreeSelect> listSorts(Sort sort);

    /**
     * @Author ypq
     * @Description 构建前端所需要下拉树结构
     * @Date 2023/10/27 10:47
     * @Return List<TreeSelect> 下拉树结构列表
     * @param sorts 分类列表
     */
    List<TreeSelect> buildSortTreeSelect(List<Sort> sorts);

    /**
    * @Author ypq
    * @Description 构建前端所需要树结构
    * @Date 2023/10/27 10:57
    * @Return List<Sort> 树结构列表
    * @param sorts
    */
    List<Sort> buildSortTree(List<Sort> sorts);

    /**
    * @Author ypq
    * @Description 新增分类
    * @Date 2023/10/27 16:34
    * @Return CommonResult
    * @param sort
    */
    CommonResult addSort(Sort sort);

    /**
    * @Author ypq
    * @Description 根据二级分类id查询对应三级分类
    * @Date 2023/11/14 10:27
    * @Return List<List<Sort>>
    * @param sortId
    */
    List<List<Sort>> listSortBySortIds(Long sortId);

    /**
     * @Author ypq
     * @Description 根据一级分类id查询对应二级分类
     * @Date 2023/11/14 18:53
     * @Return List<Sort>
     * @param parentId
     */
    List<Sort> listSortByParentIds(Long parentId);

    /**
     * @Author ypq
     * @Description 查询审核通过的一级分类列表
     * @Date 2023/11/15 19:18
     * @Return List<Sort>
     * @param sort
     */
    List<Sort> listFirstSorts(Sort sort);

    /**
     * @Author ypq
     * @Description 查询审核通过的二级分类列表
     * @Date 2023/11/15 19:18
     * @Return List<Sort>
     * @param sort
     */
    List<Sort> listSecondSorts(Sort sort);

    /**
     * @Author hyp
     * @Description 根据分类id通过审批
     * @Date 2023/11/15 19:31
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param sortId
     */
    CommonResult editApproval(Long sortId);

    /**
     * @Author hyp
     * @Description 根据分类id驳回审批
     * @Date 2023/11/15 19:32
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param sortId
     */
    CommonResult editReject(Long sortId);

    /**
     * @Author hyp
     * @Description 查询一级分类所有数据
     * @Date 2023/11/15 19:29
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param pageRequest
     * @param sort
     */
    PageResult listSortPrimarys(PageRequest pageRequest,Sort sort);

    /**
     * @Author hyp
     * @Description 查询二级分类所有数据
     * @Date 2023/11/15 19:29
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param pageRequest
     * @param sort
     */
    PageResult listSortSecondarys(PageRequest pageRequest, Sort sort);

    /**
     * @Author hyp
     * @Description 查询三级分类所有数据
     * @Date 2023/11/15 19:29
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param pageRequest
     * @param sort
     */
    PageResult listSortThreeLevels(PageRequest pageRequest, Sort sort);

    /**
     * @Author hyp
     * @Description 根据分类id查询
     * @Date 2023/11/15 19:33
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param sortId
     */
    Sort getSortById(Long sortId);

    /**
     * @Author hyp
     * @Description 根据分类id重置审批
     * @Date 2023/11/15 19:34
     * @Return com.zhuiyun.project.common.response.CommonResult
     * @param sortId
     */
    CommonResult resetApproval(Long sortId);
    /**
     * @Author hyp
     * @Description 查询所有分类
     * @Date 2023/11/22 20:41
     * @Return
     */
    List<Sort> listSortAll();
}
